1. Field of the Invention
The present invention relates generally to segmenting and reassembling message transfer units (MTU) and placing them in a memory, and more particularly to a system and method for concatenating and reassembling discontiguous MTUs via virtual memory address reassignment.
2. Description of Prior Art
One way for improving the performance of computer networks is through the use of DMA (Direct Memory Access) based protocols which automatically segment and reassemble ATM (Asynchronous Transfer Mode) cells and place them, in sequence, in memory segments or pages which are typically discontiguous in a host computer's memory. This technique eliminates the need for system software to copy data to and from the host memory to the communications card during data transmissions, yielding effectively a zero-copy interface.
However, this technique is ineffective when the system software receives network message transfer units (MTU) that exceed the size of a single hardware page. One adhoc solution is to use pre-allocated MTU-sized buffers of contiguous pages to store incoming data from an I/O card, e.g., a communications card. This solution, however, puts a strain on the operating system for memory resources, since it has to allocate contiguous physical memory for the incoming data. A resource-efficient solution is to reassemble discontiguous pages by copying them into a contiguous virtual region of memory. This technique solves the resource problem, but is plagued by being a slow memory copy (memcopy) operation, which limits its performance.
Accordingly, a need exists for a system and method which uses existing virtual memory systems to allow for a zero-copy transfer for MTUs larger than the memory page size and which is faster than traditional memcopy re-assembly.